package com.aispace.taichu.modules.dynamic.model.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.aispace.taichu.modules.model.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.Map;

/**
 * <p>
 * 大模型配置表
 * </p>
 *
 * @author chengjie.guo
 * @since 2025-09-25
 */
@Getter
@Setter
@TableName("llm_model_config")
public class ModelConfig extends BaseEntity implements Serializable  {

    private static final long serialVersionUID = 1L;

    /**
     * 模型唯一编码，如 gpt-4o, qwen-max
     */
    @TableField("model_code")
    private String modelCode;

    /**
     * 模型部署名称，如 通义千问-max
     */
    @TableField("model_name")
    private String modelName;

    /**
     * 模型类型，如 chat, embedding, tts, vision
     */
    @TableField("model_type")
    private String modelType;

    /**
     * API Key
     */
    @TableField("api_key")
    private String apiKey;

    /**
     * API 基础地址，支持自定义部署
     */
    @TableField("base_url")
    private String baseUrl;

    /**
     * 补全接口路径
     */
    @TableField("completions_path")
    private String completionsPath;

    /**
     * 额外请求头，如 X-Request-ID，支持 JSON 格式存储
     */

    @TableField(value = "request_headers", typeHandler = JacksonTypeHandler.class)
    private Map<String, String> requestHeaders;


    /**
     * 生成温度，范围 0.0-1.0
     */
    @TableField("temperature")
    private Double temperature;

    /**
     * 核采样阈值，范围 0.0-1.0
     */
    @TableField("top_p")
    private Double topP;

    /**
     * 模型描述信息
     */
    @TableField("model_description")
    private String modelDescription;

    /**
     * 是否为默认模型（1=是，0=否）
     */
    @TableField("is_default")
    private Boolean isDefault;

    /**
     * 是否启用（软删除标记，1=启用，0=禁用）
     */
    @TableField("is_enabled")
    private Boolean isEnabled;

}
